/***********************************************
 @Name :        小铭同学
 @Time :        2025-08-15
 @Email :       LiaoMingWJ233@163.com
 @Comment :     自定义控件 DeepSeek Chat 接口
 @FileName :    deepseek_chat.h
 @Version :     1.0
************************************************/


#ifndef DEEPSEEK_CHAT_H
#define DEEPSEEK_CHAT_H

#include <QObject>

#include <QNetworkRequest>
#include <QNetworkReply>
#include <QUrl>

// 用于发送网络请求的类
#include <QNetworkAccessManager>
// json 数据类
#include <QJsonDocument>
// json 数组类
#include <QJsonArray>
// json 数据类
#include <QJsonObject>
// 声明 QNetworkReply 类 处理 http 回复的信息
#include <QNetworkReply>

class Deepseek_Chat : public QObject
{
    Q_OBJECT
public:
    explicit Deepseek_Chat(QObject *parent = nullptr);
    // 构建发送信息的函数   主窗口调用这个函数给deepseek发送信息
    void ask(const QString &userInput);
    
signals:
    // 当收到 AI 回复时触发后，将 AI 回复的内容通过信号发出到主窗口
    void replyReady(const QString &reply); 
    // 当请求失败时触发,发送错误信息
    void error_signals(const QString &message);    
    
    
private slots:
    // 网络请求完成后调用的槽函数
    // 主要负责 读取 API 返回数据并处理回复 或者 错误
    void onReplyFinished(QNetworkReply *reply);
    
private:
    // 网络请求管理类 负责发出 http 请求
    QNetworkAccessManager *manager;
    
    // 聊天上下文历史（用户/助手的消息都存放在这里）
    // 每次请求都会带上完整历史，保证上下文连贯
    QJsonArray messageHistory;
    
    // DeepSeek Chat API 的访问密钥（你自己的 API Key） 
    // 通过 https://api-docs.deepseek.com/zh-cn/ 获取
    const QString apiKey = "sk-598479b8aa8e46c4b7b4afa7de98aa4c";
    
    // DeepSeek Chat 接口的完整 URL
    const QString apiUrl = "https://api.deepseek.com/v1/chat/completions";
    
};

#endif // DEEPSEEK_CHAT_H
